"""
用例ID: TC_login_001
用例标题: 验证输入已注册的用户可以登录系统
预制条件:
    1. 在系统中 已注册用户名为:junfu 密码为:123456 的用户
    2. 打开谷歌浏览器,进入ecshop的登录页面
用例步骤:
    1. 输入用户名 : junfu
    2. 输入密码 : 123456
    3. 点击登录
预期结果:
    页面左上角显示登录的用户名
"""
import unittest
import os
import ddt
from Page.login_page import *
from common.databaseTool import DatabaseTool
from common.openExcel import *
import hashlib

filePath = os.path.dirname(__file__) + "/testData/测试数据.xlsx"
login_f = Open_excel(filePath, "登录失败", {"password": str}).read()

@ddt.ddt
class LoginCase(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        # 预制条件:
        #     1. 在系统中 已注册用户名为:lisa 密码为:123456 的用户
        cls.db = DatabaseTool("168168", "ecshop_db", port=3308)
        password = hashlib.md5(b"123456").hexdigest()
        sql = f"insert into ecs_users (user_name,`password`)values ('lisa','{password}')"
        cls.db.execute_one(sql)
    def setUp(self):
        #     2. 打开谷歌浏览器,进入ecshop的登录页面
        self.driver = open_browser()
        self.lg = Login_page(self.driver)
        self.lg.open_url(login_url)

    def tearDown(self):
        # 关闭浏览器
        self.lg.quit()

    @classmethod
    def tearDownClass(cls):
        # 还原数据库
        sql = f"delete from ecs_users where user_name = 'judy'"
        cls.db.execute_one(sql)

    # 判断 使用错误数据 登录失败
    def login_false(self, username, password):
        # 用例步骤:
        #     1. 输入用户名 : junfu
        self.lg.input_username(username)
        #     2. 输入密码 : 123456
        self.lg.input_password(password)
        #     3. 点击登录
        self.lg.click_login()
        try:
            user = self.lg.get_element_text(("class name", "f4_b"))
        except Exception as e:
            pass
        else:
            self.assertTrue(False, msg="用例执行失败,当前页面未定位到注册的用户名")

    @ddt.data(*login_f)
    def test_login(self, data):
        self.login_false(**data)


if __name__ == '__main__':
    unittest.main()
